<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>2随机森林</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
[dir="rtl"] #ipython_notebook {
  float: right !important;
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
[dir="rtl"] #tabs li {
  float: right;
}
ul#tabs {
  margin-bottom: 4px;
}
[dir="rtl"] ul#tabs {
  margin-right: 0px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons {
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-right {
  padding-top: 1px;
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-left {
  float: right !important;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
[dir="rtl"] #tree-selector a {
  float: right;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
[dir="rtl"] #new-menu {
  text-align: right;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
[dir="rtl"] #running .col-sm-8 {
  float: right !important;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  min-width: 0;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 21ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  width: 100%;
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
  padding: 10px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#20998;&#31867;&#26641;">&#20998;&#31867;&#26641;<a class="anchor-link" href="#&#20998;&#31867;&#26641;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="o">%</span><span class="k">matplotlib</span> inline  
<span class="c1">#帮助画图</span>
<span class="kn">from</span> <span class="nn">sklearn.tree</span> <span class="k">import</span> <span class="n">DecisionTreeClassifier</span>
<span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestClassifier</span>
<span class="kn">from</span> <span class="nn">sklearn.datasets</span> <span class="k">import</span> <span class="n">load_wine</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">wine</span> <span class="o">=</span> <span class="n">load_wine</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">train_test_split</span>
<span class="n">Xtrain</span><span class="p">,</span> <span class="n">Xtest</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">,</span> <span class="n">Ytest</span> <span class="o">=</span> <span class="n">train_test_split</span><span class="p">(</span><span class="n">wine</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">test_size</span><span class="o">=</span><span class="mf">0.3</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[5]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">clf</span> <span class="o">=</span> <span class="n">DecisionTreeClassifier</span><span class="p">(</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>

<span class="n">clf</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span><span class="n">Ytrain</span><span class="p">)</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span><span class="n">Ytrain</span><span class="p">)</span>

<span class="n">score_c</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
<span class="n">score_r</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Single Tree:</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">score_c</span><span class="p">)</span>
        <span class="p">,</span><span class="s2">&quot;Random Forest:</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">score_r</span><span class="p">)</span>
        <span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Single Tree:0.9259259259259259 Random Forest:0.9814814814814815
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/sklearn/ensemble/forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
  &#34;10 in version 0.20 to 100 in 0.22.&#34;, FutureWarning)
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[6]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#复习一下交叉验证</span>
<span class="c1">#交叉验证：是数据集划分为n分，依次取每一份做测试集，每n-1份做训练集，多次训练模型以观测模型稳定性的方法</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>

<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
<span class="n">rfc_s</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>

<span class="n">clf</span> <span class="o">=</span> <span class="n">DecisionTreeClassifier</span><span class="p">()</span>
<span class="n">clf_s</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">clf</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">11</span><span class="p">),</span><span class="n">rfc_s</span><span class="p">,</span><span class="n">label</span> <span class="o">=</span> <span class="s2">&quot;RandomForest&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">11</span><span class="p">),</span><span class="n">clf_s</span><span class="p">,</span><span class="n">label</span> <span class="o">=</span> <span class="s2">&quot;Decision Tree&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#38543;&#26426;&#26862;&#26519;&#21644;&#20915;&#31574;&#26641;&#22312;&#21313;&#32452;&#20132;&#21449;&#39564;&#35777;&#19979;&#30340;&#25928;&#26524;&#23545;&#27604;">&#38543;&#26426;&#26862;&#26519;&#21644;&#20915;&#31574;&#26641;&#22312;&#21313;&#32452;&#20132;&#21449;&#39564;&#35777;&#19979;&#30340;&#25928;&#26524;&#23545;&#27604;<a class="anchor-link" href="#&#38543;&#26426;&#26862;&#26519;&#21644;&#20915;&#31574;&#26641;&#22312;&#21313;&#32452;&#20132;&#21449;&#39564;&#35777;&#19979;&#30340;&#25928;&#26524;&#23545;&#27604;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc_l</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">clf_l</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span>
    <span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
    <span class="n">rfc_s</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">rfc_l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rfc_s</span><span class="p">)</span>
    
    <span class="n">clf</span> <span class="o">=</span> <span class="n">DecisionTreeClassifier</span><span class="p">()</span>
    <span class="n">clf_s</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">clf</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">clf_l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">clf_s</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">11</span><span class="p">),</span><span class="n">rfc_l</span><span class="p">,</span><span class="n">label</span> <span class="o">=</span> <span class="s2">&quot;Random Forest&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">11</span><span class="p">),</span><span class="n">clf_l</span><span class="p">,</span><span class="n">label</span> <span class="o">=</span> <span class="s2">&quot;Decision Tree&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="n_estimators&#30340;&#23398;&#20064;&#26354;&#32447;">n_estimators&#30340;&#23398;&#20064;&#26354;&#32447;<a class="anchor-link" href="#n_estimators&#30340;&#23398;&#20064;&#26354;&#32447;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[8]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">superpa</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">200</span><span class="p">):</span>
    <span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>
    <span class="n">rfc_s</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">superpa</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rfc_s</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">superpa</span><span class="p">),</span><span class="n">superpa</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">superpa</span><span class="p">)))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">201</span><span class="p">),</span><span class="n">superpa</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>0.9888888888888889 45
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
qQb9/2A/VL7tJtFWAAAAAElFTkSuQmCC
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="random_state">random_state<a class="anchor-link" href="#random_state">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>随机森林的random_state生成的是固定的森林</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[9]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">scipy.special</span> <span class="k">import</span> <span class="n">comb</span>
<span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">comb</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="n">i</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="mf">0.2</span><span class="o">**</span><span class="n">i</span><span class="p">)</span><span class="o">*</span><span class="p">((</span><span class="mi">1</span><span class="o">-</span><span class="mf">0.2</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="mi">25</span><span class="o">-</span><span class="n">i</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span><span class="mi">26</span><span class="p">)])</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="c1"># 25颗树，每棵树错误的概率为0.2，则25颗树判错的概率为多少？</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[9]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.00036904803455582827</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>为什么随机森林里的众多树会有不同的判断结果？</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[13]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">type</span><span class="p">(</span><span class="n">rfc</span><span class="o">.</span><span class="n">estimators_</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[13]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>sklearn.tree.tree.DecisionTreeClassifier</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[11]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#随机森林的重要属性之一：estimators_，查看森林中树的状况</span>
<span class="n">rfc</span><span class="o">.</span><span class="n">estimators_</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">random_state</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[11]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>1872583848</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[12]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">rfc</span><span class="o">.</span><span class="n">estimators_</span><span class="p">)):</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">rfc</span><span class="o">.</span><span class="n">estimators_</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">random_state</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>1872583848
794921487
111352301
1853453896
213298710
1922988331
1869695442
2081981515
1805465960
1376693511
1418777250
663257521
878959199
854108747
512264917
515183663
1287007039
2083814687
1146014426
570104212
520265852
1366773364
125164325
786090663
578016451
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="bootstrap-&amp;-oob_score">bootstrap &amp; oob_score<a class="anchor-link" href="#bootstrap-&amp;-oob_score">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>袋装法正是通过有放回的随机抽样技术来形成不同的训练数据，bootstrap就是用来控制抽样技术的参数</p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>bootstrap参数默认True，代表采用这种有放回的随机抽样技术。通常，这个参数不会被我们设置为False</p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>如果希望用袋外数据来测试，则需要在实例化时就将oob_score这个参数调整为True，训练完毕之后，我们可以用
随机森林的另一个重要属性：oob_score_来查看我们的在袋外数据上测试的结果</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[14]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#无需划分训练集和测试集</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">oob_score</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">wine</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">wine</span><span class="o">.</span><span class="n">target</span><span class="p">)</span>
<span class="c1">#重要属性oob_score_</span>
<span class="n">rfc</span><span class="o">.</span><span class="n">oob_score_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[14]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9662921348314607</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#37325;&#35201;&#23646;&#24615;&#21644;&#25509;&#21475;">&#37325;&#35201;&#23646;&#24615;&#21644;&#25509;&#21475;<a class="anchor-link" href="#&#37325;&#35201;&#23646;&#24615;&#21644;&#25509;&#21475;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#大家可以分别取尝试一下这些属性和接口</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[16]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[16]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9814814814814815</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[17]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span><span class="o">.</span><span class="n">feature_importances_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[17]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0.21712325, 0.03608606, 0.01660669, 0.0075598 , 0.03351303,
       0.0483309 , 0.16230165, 0.05118297, 0.01606488, 0.14265971,
       0.049008  , 0.06073031, 0.15883276])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[18]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[18]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[17,  9,  5, ..., 17,  6,  3],
       [ 3, 13,  1, ..., 19, 15, 10],
       [ 3,  5,  1, ...,  4,  9,  6],
       ...,
       [ 3,  8,  1, ...,  4, 11,  8],
       [18, 14,  8, ..., 11, 15, 19],
       [ 3,  5,  1, ..., 19,  9,  6]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[21]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span><span class="o">.</span><span class="n">shape</span>
<span class="c1"># 返回每个样本在25颗树上所在叶子节点的索引</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[21]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(54, 25)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[19]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[19]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 2, 1, 0, 2, 1, 0, 0,
       0, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 0, 0, 2, 1, 1, 2, 2, 1, 2, 1, 1,
       2, 1, 2, 0, 1, 2, 2, 1, 0, 1])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[20]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span><span class="o">.</span><span class="n">predict_proba</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[20]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[0.  , 0.24, 0.76],
       [0.16, 0.84, 0.  ],
       [0.  , 1.  , 0.  ],
       [0.  , 0.36, 0.64],
       [0.  , 0.36, 0.64],
       [1.  , 0.  , 0.  ],
       [0.8 , 0.2 , 0.  ],
       [1.  , 0.  , 0.  ],
       [0.96, 0.04, 0.  ],
       [1.  , 0.  , 0.  ],
       [1.  , 0.  , 0.  ],
       [0.  , 0.32, 0.68],
       [0.12, 0.84, 0.04],
       [0.84, 0.16, 0.  ],
       [0.04, 0.96, 0.  ],
       [0.  , 0.16, 0.84],
       [0.  , 1.  , 0.  ],
       [0.8 , 0.12, 0.08],
       [0.  , 0.2 , 0.8 ],
       [0.12, 0.84, 0.04],
       [1.  , 0.  , 0.  ],
       [1.  , 0.  , 0.  ],
       [1.  , 0.  , 0.  ],
       [0.  , 0.28, 0.72],
       [0.  , 0.32, 0.68],
       [0.76, 0.24, 0.  ],
       [0.  , 1.  , 0.  ],
       [0.04, 0.04, 0.92],
       [0.84, 0.12, 0.04],
       [0.16, 0.64, 0.2 ],
       [0.  , 0.44, 0.56],
       [0.  , 0.04, 0.96],
       [1.  , 0.  , 0.  ],
       [0.88, 0.12, 0.  ],
       [1.  , 0.  , 0.  ],
       [0.04, 0.04, 0.92],
       [0.  , 1.  , 0.  ],
       [0.2 , 0.72, 0.08],
       [0.  , 0.16, 0.84],
       [0.08, 0.16, 0.76],
       [0.  , 0.92, 0.08],
       [0.  , 0.36, 0.64],
       [0.  , 1.  , 0.  ],
       [0.  , 0.92, 0.08],
       [0.12, 0.16, 0.72],
       [0.  , 1.  , 0.  ],
       [0.04, 0.32, 0.64],
       [0.96, 0.04, 0.  ],
       [0.08, 0.8 , 0.12],
       [0.  , 0.12, 0.88],
       [0.  , 0.  , 1.  ],
       [0.  , 0.96, 0.04],
       [0.92, 0.08, 0.  ],
       [0.04, 0.96, 0.  ]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Bonus&#65306;Bagging&#30340;&#21478;&#19968;&#20010;&#24517;&#35201;&#26465;&#20214;">Bonus&#65306;Bagging&#30340;&#21478;&#19968;&#20010;&#24517;&#35201;&#26465;&#20214;<a class="anchor-link" href="#Bonus&#65306;Bagging&#30340;&#21478;&#19968;&#20010;&#24517;&#35201;&#26465;&#20214;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>袋装法还有另一个必要条件：基分类器的判断准确率至少要超过随机分类器，即时说，基分类器的判断准确率至少要超过50%</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[22]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">epsilon</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">20</span><span class="p">):</span>
    <span class="n">E</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">comb</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="n">i</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">epsilon</span><span class="o">**</span><span class="n">i</span><span class="p">)</span><span class="o">*</span><span class="p">((</span><span class="mi">1</span><span class="o">-</span><span class="n">epsilon</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="mi">25</span><span class="o">-</span><span class="n">i</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span><span class="mi">26</span><span class="p">)])</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
    <span class="n">y</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">E</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="s2">&quot;o-&quot;</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;when estimators are different&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="s2">&quot;--&quot;</span><span class="p">,</span><span class="n">color</span><span class="o">=</span><span class="s2">&quot;red&quot;</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;if all estimators are same&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">&quot;individual estimator&#39;s error&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">&quot;RandomForest&#39;s error&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
P9dJLoMAAAAASUVORK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#22238;&#24402;&#26641;">&#22238;&#24402;&#26641;<a class="anchor-link" href="#&#22238;&#24402;&#26641;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.datasets</span> <span class="k">import</span> <span class="n">load_boston</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>
<span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestRegressor</span>
<span class="kn">import</span> <span class="nn">sklearn</span>
<span class="n">boston</span> <span class="o">=</span> <span class="n">load_boston</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[24]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">regressor</span> <span class="o">=</span> <span class="n">RandomForestRegressor</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">cross_val_score</span><span class="p">(</span><span class="n">regressor</span><span class="p">,</span> <span class="n">boston</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">boston</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">cv</span><span class="o">=</span><span class="mi">10</span>
                <span class="p">,</span><span class="n">scoring</span> <span class="o">=</span> <span class="s2">&quot;neg_mean_squared_error&quot;</span>
<span class="c1">#                 默认R平方</span>
               <span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[24]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([-10.72900447,  -5.36049859,  -4.74614178, -20.84946337,
       -12.23497347, -17.99274635,  -6.8952756 , -93.78884428,
       -29.80411702, -15.25776814])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="sklearn&#20013;&#30340;&#27169;&#22411;&#35780;&#20272;&#25351;&#26631;&#65288;&#25171;&#20998;&#65289;&#21015;&#34920;">sklearn&#20013;&#30340;&#27169;&#22411;&#35780;&#20272;&#25351;&#26631;&#65288;&#25171;&#20998;&#65289;&#21015;&#34920;<a class="anchor-link" href="#sklearn&#20013;&#30340;&#27169;&#22411;&#35780;&#20272;&#25351;&#26631;&#65288;&#25171;&#20998;&#65289;&#21015;&#34920;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[25]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># sklearn中的模型评估指标（打分）列表</span>
<span class="nb">sorted</span><span class="p">(</span><span class="n">sklearn</span><span class="o">.</span><span class="n">metrics</span><span class="o">.</span><span class="n">SCORERS</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[25]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;accuracy&#39;,
 &#39;adjusted_mutual_info_score&#39;,
 &#39;adjusted_rand_score&#39;,
 &#39;average_precision&#39;,
 &#39;balanced_accuracy&#39;,
 &#39;brier_score_loss&#39;,
 &#39;completeness_score&#39;,
 &#39;explained_variance&#39;,
 &#39;f1&#39;,
 &#39;f1_macro&#39;,
 &#39;f1_micro&#39;,
 &#39;f1_samples&#39;,
 &#39;f1_weighted&#39;,
 &#39;fowlkes_mallows_score&#39;,
 &#39;homogeneity_score&#39;,
 &#39;mutual_info_score&#39;,
 &#39;neg_log_loss&#39;,
 &#39;neg_mean_absolute_error&#39;,
 &#39;neg_mean_squared_error&#39;,
 &#39;neg_mean_squared_log_error&#39;,
 &#39;neg_median_absolute_error&#39;,
 &#39;normalized_mutual_info_score&#39;,
 &#39;precision&#39;,
 &#39;precision_macro&#39;,
 &#39;precision_micro&#39;,
 &#39;precision_samples&#39;,
 &#39;precision_weighted&#39;,
 &#39;r2&#39;,
 &#39;recall&#39;,
 &#39;recall_macro&#39;,
 &#39;recall_micro&#39;,
 &#39;recall_samples&#39;,
 &#39;recall_weighted&#39;,
 &#39;roc_auc&#39;,
 &#39;v_measure_score&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#23454;&#20363;&#65306;&#29992;&#38543;&#26426;&#26862;&#26519;&#22238;&#24402;&#22635;&#34917;&#32570;&#22833;&#20540;">&#23454;&#20363;&#65306;&#29992;&#38543;&#26426;&#26862;&#26519;&#22238;&#24402;&#22635;&#34917;&#32570;&#22833;&#20540;<a class="anchor-link" href="#&#23454;&#20363;&#65306;&#29992;&#38543;&#26426;&#26862;&#26519;&#22238;&#24402;&#22635;&#34917;&#32570;&#22833;&#20540;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">from</span> <span class="nn">sklearn.datasets</span> <span class="k">import</span> <span class="n">load_boston</span>
<span class="kn">from</span> <span class="nn">sklearn.impute</span> <span class="k">import</span> <span class="n">SimpleImputer</span>
<span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestRegressor</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[27]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">dataset</span> <span class="o">=</span> <span class="n">load_boston</span><span class="p">()</span>
<span class="n">dataset</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[27]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(506, 13)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#总共506*13=6578个数据</span>
<span class="n">X_full</span><span class="p">,</span> <span class="n">y_full</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">dataset</span><span class="o">.</span><span class="n">target</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">n_samples</span> <span class="o">=</span> <span class="n">X_full</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">n_features</span> <span class="o">=</span> <span class="n">X_full</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#首先确定我们希望放入的缺失数据的比例，在这里我们假设是50%，那总共就要有3289个数据缺失</span>
<span class="n">rng</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">RandomState</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">missing_rate</span> <span class="o">=</span> <span class="mf">0.5</span>
<span class="n">n_missing_samples</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">n_samples</span> <span class="o">*</span> <span class="n">n_features</span> <span class="o">*</span> <span class="n">missing_rate</span><span class="p">))</span>
<span class="c1">#np.floor向下取整，返回.0格式的浮点数</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#所有数据要随机遍布在数据集的各行各列当中，而一个缺失的数据会需要一个行索引和一个列索引</span>
<span class="c1">#如果能够创造一个数组，包含3289个分布在0~506中间的行索引，和3289个分布在0~13之间的列索引，那我们就可</span>
<span class="c1">#以利用索引来为数据中的任意3289个位置赋空值</span>
<span class="c1">#然后我们用0，均值和随机森林来填写这些缺失值，然后查看回归的结果如何</span>

<span class="n">missing_features</span> <span class="o">=</span> <span class="n">rng</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">n_features</span><span class="p">,</span><span class="n">n_missing_samples</span><span class="p">)</span>
<span class="c1"># numpy.random.randint(low, high=None, size=None, dtype=&#39;l&#39;)</span>
<span class="c1"># low : int </span>
<span class="c1"># 产生随机数的最小值</span>
<span class="c1"># high : int, optional </span>
<span class="c1"># 给随机数设置个上限，即产生的随机数必须小于high</span>
<span class="c1"># size : int or tuple of ints, optional </span>
<span class="c1"># 输出的大小，可以是整数，或者元组</span>
<span class="n">missing_samples</span> <span class="o">=</span> <span class="n">rng</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">n_samples</span><span class="p">,</span><span class="n">n_missing_samples</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[33]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">len</span><span class="p">(</span><span class="n">missing_features</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[33]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>3289</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[34]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">len</span><span class="p">(</span><span class="n">missing_samples</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[34]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>3289</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#missing_samples = rng.choice(dataset.data.shape[0],n_missing_samples,replace=False)</span>
<span class="c1">#我们现在采样了3289个数据，远远超过我们的样本量506，所以我们使用随机抽取的函数randint。但如果我们需要</span>
<span class="c1">#的数据量小于我们的样本量506，那我们可以采用np.random.choice来抽样，choice会随机抽取不重复的随机数，</span>
<span class="c1">#因此可以帮助我们让数据更加分散，确保数据不会集中在一些行中</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_missing</span> <span class="o">=</span> <span class="n">X_full</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">y_missing</span> <span class="o">=</span> <span class="n">y_full</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">X_missing</span><span class="p">[</span><span class="n">missing_samples</span><span class="p">,</span><span class="n">missing_features</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[36]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_missing</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">X_missing</span><span class="p">)</span>
<span class="c1">#转换成DataFrame是为了后续方便各种操作，numpy对矩阵的运算速度快到拯救人生，但是在索引等功能上却不如</span>
<span class="c1">#pandas来得好用</span>
<span class="n">X_missing</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[36]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
      <th>1</th>
      <th>2</th>
      <th>3</th>
      <th>4</th>
      <th>5</th>
      <th>6</th>
      <th>7</th>
      <th>8</th>
      <th>9</th>
      <th>10</th>
      <th>11</th>
      <th>12</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>NaN</td>
      <td>18.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.538</td>
      <td>NaN</td>
      <td>65.2</td>
      <td>4.0900</td>
      <td>1.0</td>
      <td>296.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>4.98</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0.02731</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.469</td>
      <td>NaN</td>
      <td>78.9</td>
      <td>4.9671</td>
      <td>2.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>9.14</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0.02729</td>
      <td>NaN</td>
      <td>7.07</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>7.185</td>
      <td>61.1</td>
      <td>NaN</td>
      <td>2.0</td>
      <td>242.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>3</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.458</td>
      <td>NaN</td>
      <td>45.8</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>222.0</td>
      <td>18.7</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>4</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>2.18</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>7.147</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>18.7</td>
      <td>NaN</td>
      <td>5.33</td>
    </tr>
    <tr>
      <th>5</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>6.430</td>
      <td>58.7</td>
      <td>6.0622</td>
      <td>NaN</td>
      <td>222.0</td>
      <td>18.7</td>
      <td>NaN</td>
      <td>5.21</td>
    </tr>
    <tr>
      <th>6</th>
      <td>NaN</td>
      <td>12.5</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.524</td>
      <td>NaN</td>
      <td>66.6</td>
      <td>5.5605</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>15.2</td>
      <td>NaN</td>
      <td>12.43</td>
    </tr>
    <tr>
      <th>7</th>
      <td>NaN</td>
      <td>12.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.524</td>
      <td>NaN</td>
      <td>96.1</td>
      <td>5.9505</td>
      <td>NaN</td>
      <td>311.0</td>
      <td>15.2</td>
      <td>396.90</td>
      <td>19.15</td>
    </tr>
    <tr>
      <th>8</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>7.87</td>
      <td>NaN</td>
      <td>0.524</td>
      <td>5.631</td>
      <td>NaN</td>
      <td>6.0821</td>
      <td>5.0</td>
      <td>311.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>29.93</td>
    </tr>
    <tr>
      <th>9</th>
      <td>0.17004</td>
      <td>NaN</td>
      <td>7.87</td>
      <td>0.0</td>
      <td>0.524</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>6.5921</td>
      <td>NaN</td>
      <td>311.0</td>
      <td>NaN</td>
      <td>386.71</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>10</th>
      <td>0.22489</td>
      <td>12.5</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>6.3467</td>
      <td>5.0</td>
      <td>311.0</td>
      <td>15.2</td>
      <td>392.52</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>11</th>
      <td>0.11747</td>
      <td>12.5</td>
      <td>7.87</td>
      <td>0.0</td>
      <td>0.524</td>
      <td>6.009</td>
      <td>82.9</td>
      <td>6.2267</td>
      <td>5.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>12</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.524</td>
      <td>5.889</td>
      <td>39.0</td>
      <td>5.4509</td>
      <td>NaN</td>
      <td>311.0</td>
      <td>15.2</td>
      <td>390.50</td>
      <td>15.71</td>
    </tr>
    <tr>
      <th>13</th>
      <td>0.62976</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>61.8</td>
      <td>NaN</td>
      <td>4.0</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>14</th>
      <td>0.63796</td>
      <td>0.0</td>
      <td>8.14</td>
      <td>NaN</td>
      <td>0.538</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>4.4619</td>
      <td>4.0</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>380.02</td>
      <td>10.26</td>
    </tr>
    <tr>
      <th>15</th>
      <td>0.62739</td>
      <td>0.0</td>
      <td>8.14</td>
      <td>0.0</td>
      <td>0.538</td>
      <td>5.834</td>
      <td>NaN</td>
      <td>4.4986</td>
      <td>4.0</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>NaN</td>
      <td>8.47</td>
    </tr>
    <tr>
      <th>16</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>8.14</td>
      <td>0.0</td>
      <td>0.538</td>
      <td>5.935</td>
      <td>29.3</td>
      <td>4.4986</td>
      <td>NaN</td>
      <td>307.0</td>
      <td>21.0</td>
      <td>386.85</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>17</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>8.14</td>
      <td>NaN</td>
      <td>0.538</td>
      <td>5.990</td>
      <td>NaN</td>
      <td>4.2579</td>
      <td>NaN</td>
      <td>307.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.67</td>
    </tr>
    <tr>
      <th>18</th>
      <td>0.80271</td>
      <td>NaN</td>
      <td>8.14</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>5.456</td>
      <td>36.6</td>
      <td>3.7965</td>
      <td>4.0</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>288.99</td>
      <td>11.69</td>
    </tr>
    <tr>
      <th>19</th>
      <td>0.72580</td>
      <td>NaN</td>
      <td>8.14</td>
      <td>0.0</td>
      <td>0.538</td>
      <td>5.727</td>
      <td>NaN</td>
      <td>3.7965</td>
      <td>4.0</td>
      <td>307.0</td>
      <td>21.0</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>20</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.538</td>
      <td>5.570</td>
      <td>98.1</td>
      <td>3.7979</td>
      <td>4.0</td>
      <td>307.0</td>
      <td>NaN</td>
      <td>376.57</td>
      <td>21.02</td>
    </tr>
    <tr>
      <th>21</th>
      <td>0.85204</td>
      <td>0.0</td>
      <td>8.14</td>
      <td>0.0</td>
      <td>0.538</td>
      <td>5.965</td>
      <td>89.2</td>
      <td>4.0123</td>
      <td>4.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>392.53</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>22</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>8.14</td>
      <td>NaN</td>
      <td>0.538</td>
      <td>6.142</td>
      <td>91.7</td>
      <td>NaN</td>
      <td>4.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>18.72</td>
    </tr>
    <tr>
      <th>23</th>
      <td>0.98843</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>394.54</td>
      <td>19.88</td>
    </tr>
    <tr>
      <th>24</th>
      <td>0.75026</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.538</td>
      <td>5.924</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>16.30</td>
    </tr>
    <tr>
      <th>25</th>
      <td>0.84054</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.538</td>
      <td>NaN</td>
      <td>85.7</td>
      <td>4.4546</td>
      <td>NaN</td>
      <td>307.0</td>
      <td>21.0</td>
      <td>303.42</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>26</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>5.813</td>
      <td>NaN</td>
      <td>4.6820</td>
      <td>4.0</td>
      <td>307.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>27</th>
      <td>0.95577</td>
      <td>0.0</td>
      <td>8.14</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>6.047</td>
      <td>88.8</td>
      <td>4.4534</td>
      <td>4.0</td>
      <td>307.0</td>
      <td>NaN</td>
      <td>306.38</td>
      <td>17.28</td>
    </tr>
    <tr>
      <th>28</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.538</td>
      <td>6.495</td>
      <td>94.4</td>
      <td>NaN</td>
      <td>4.0</td>
      <td>307.0</td>
      <td>21.0</td>
      <td>387.94</td>
      <td>12.80</td>
    </tr>
    <tr>
      <th>29</th>
      <td>1.00245</td>
      <td>0.0</td>
      <td>8.14</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>6.674</td>
      <td>NaN</td>
      <td>4.2390</td>
      <td>4.0</td>
      <td>307.0</td>
      <td>21.0</td>
      <td>380.23</td>
      <td>11.98</td>
    </tr>
    <tr>
      <th>...</th>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <th>476</th>
      <td>4.87141</td>
      <td>NaN</td>
      <td>18.10</td>
      <td>0.0</td>
      <td>0.614</td>
      <td>NaN</td>
      <td>93.6</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>666.0</td>
      <td>NaN</td>
      <td>396.21</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>477</th>
      <td>15.02340</td>
      <td>0.0</td>
      <td>18.10</td>
      <td>0.0</td>
      <td>0.614</td>
      <td>5.304</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>20.2</td>
      <td>NaN</td>
      <td>24.91</td>
    </tr>
    <tr>
      <th>478</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>18.10</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>666.0</td>
      <td>NaN</td>
      <td>379.70</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>479</th>
      <td>14.33370</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.614</td>
      <td>6.229</td>
      <td>88.0</td>
      <td>1.9512</td>
      <td>24.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>383.32</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>480</th>
      <td>5.82401</td>
      <td>NaN</td>
      <td>18.10</td>
      <td>0.0</td>
      <td>0.532</td>
      <td>NaN</td>
      <td>64.7</td>
      <td>3.4242</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>10.74</td>
    </tr>
    <tr>
      <th>481</th>
      <td>5.70818</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.532</td>
      <td>6.750</td>
      <td>NaN</td>
      <td>3.3317</td>
      <td>24.0</td>
      <td>NaN</td>
      <td>20.2</td>
      <td>393.07</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>482</th>
      <td>5.73116</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.532</td>
      <td>7.061</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>24.0</td>
      <td>666.0</td>
      <td>20.2</td>
      <td>395.28</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>483</th>
      <td>2.81838</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.532</td>
      <td>NaN</td>
      <td>40.3</td>
      <td>4.0983</td>
      <td>NaN</td>
      <td>666.0</td>
      <td>20.2</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>484</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.583</td>
      <td>5.871</td>
      <td>41.9</td>
      <td>NaN</td>
      <td>24.0</td>
      <td>666.0</td>
      <td>NaN</td>
      <td>370.73</td>
      <td>13.34</td>
    </tr>
    <tr>
      <th>485</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>18.10</td>
      <td>NaN</td>
      <td>0.583</td>
      <td>6.312</td>
      <td>51.9</td>
      <td>3.9917</td>
      <td>24.0</td>
      <td>666.0</td>
      <td>20.2</td>
      <td>388.62</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>486</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>18.10</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>6.114</td>
      <td>79.8</td>
      <td>3.5459</td>
      <td>24.0</td>
      <td>666.0</td>
      <td>20.2</td>
      <td>392.68</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>487</th>
      <td>4.83567</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>5.905</td>
      <td>53.2</td>
      <td>NaN</td>
      <td>24.0</td>
      <td>NaN</td>
      <td>20.2</td>
      <td>388.22</td>
      <td>11.45</td>
    </tr>
    <tr>
      <th>488</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>5.454</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>4.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>18.06</td>
    </tr>
    <tr>
      <th>489</th>
      <td>0.18337</td>
      <td>NaN</td>
      <td>27.74</td>
      <td>0.0</td>
      <td>0.609</td>
      <td>5.414</td>
      <td>98.3</td>
      <td>NaN</td>
      <td>4.0</td>
      <td>711.0</td>
      <td>20.1</td>
      <td>344.05</td>
      <td>23.97</td>
    </tr>
    <tr>
      <th>490</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>27.74</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>98.0</td>
      <td>1.8226</td>
      <td>NaN</td>
      <td>711.0</td>
      <td>NaN</td>
      <td>318.43</td>
      <td>29.68</td>
    </tr>
    <tr>
      <th>491</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>27.74</td>
      <td>0.0</td>
      <td>0.609</td>
      <td>5.983</td>
      <td>98.8</td>
      <td>1.8681</td>
      <td>4.0</td>
      <td>711.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>18.07</td>
    </tr>
    <tr>
      <th>492</th>
      <td>0.11132</td>
      <td>NaN</td>
      <td>27.74</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>83.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>711.0</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>13.35</td>
    </tr>
    <tr>
      <th>493</th>
      <td>0.17331</td>
      <td>NaN</td>
      <td>9.69</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>5.707</td>
      <td>NaN</td>
      <td>2.3817</td>
      <td>6.0</td>
      <td>391.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>494</th>
      <td>NaN</td>
      <td>0.0</td>
      <td>9.69</td>
      <td>NaN</td>
      <td>0.585</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>2.3817</td>
      <td>6.0</td>
      <td>391.0</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>13.59</td>
    </tr>
    <tr>
      <th>495</th>
      <td>0.17899</td>
      <td>0.0</td>
      <td>9.69</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>28.8</td>
      <td>NaN</td>
      <td>6.0</td>
      <td>NaN</td>
      <td>19.2</td>
      <td>393.29</td>
      <td>17.60</td>
    </tr>
    <tr>
      <th>496</th>
      <td>0.28960</td>
      <td>0.0</td>
      <td>9.69</td>
      <td>NaN</td>
      <td>0.585</td>
      <td>NaN</td>
      <td>72.9</td>
      <td>2.7986</td>
      <td>6.0</td>
      <td>391.0</td>
      <td>19.2</td>
      <td>396.90</td>
      <td>21.14</td>
    </tr>
    <tr>
      <th>497</th>
      <td>0.26838</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>70.6</td>
      <td>2.8927</td>
      <td>6.0</td>
      <td>NaN</td>
      <td>19.2</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>498</th>
      <td>0.23912</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.585</td>
      <td>NaN</td>
      <td>65.3</td>
      <td>2.4091</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>12.92</td>
    </tr>
    <tr>
      <th>499</th>
      <td>0.17783</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>5.569</td>
      <td>73.5</td>
      <td>2.3999</td>
      <td>6.0</td>
      <td>391.0</td>
      <td>19.2</td>
      <td>395.77</td>
      <td>15.10</td>
    </tr>
    <tr>
      <th>500</th>
      <td>0.22438</td>
      <td>0.0</td>
      <td>9.69</td>
      <td>NaN</td>
      <td>0.585</td>
      <td>6.027</td>
      <td>79.7</td>
      <td>2.4982</td>
      <td>6.0</td>
      <td>391.0</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>501</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>0.573</td>
      <td>NaN</td>
      <td>69.1</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>NaN</td>
      <td>9.67</td>
    </tr>
    <tr>
      <th>502</th>
      <td>0.04527</td>
      <td>0.0</td>
      <td>11.93</td>
      <td>0.0</td>
      <td>0.573</td>
      <td>6.120</td>
      <td>76.7</td>
      <td>2.2875</td>
      <td>1.0</td>
      <td>273.0</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>9.08</td>
    </tr>
    <tr>
      <th>503</th>
      <td>NaN</td>
      <td>NaN</td>
      <td>11.93</td>
      <td>NaN</td>
      <td>0.573</td>
      <td>6.976</td>
      <td>91.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>NaN</td>
      <td>5.64</td>
    </tr>
    <tr>
      <th>504</th>
      <td>0.10959</td>
      <td>0.0</td>
      <td>11.93</td>
      <td>NaN</td>
      <td>0.573</td>
      <td>NaN</td>
      <td>89.3</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>NaN</td>
      <td>21.0</td>
      <td>393.45</td>
      <td>6.48</td>
    </tr>
    <tr>
      <th>505</th>
      <td>0.04741</td>
      <td>0.0</td>
      <td>11.93</td>
      <td>0.0</td>
      <td>0.573</td>
      <td>6.030</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>396.90</td>
      <td>7.88</td>
    </tr>
  </tbody>
</table>
<p>506 rows × 13 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[37]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_missing</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
RangeIndex: 506 entries, 0 to 505
Data columns (total 13 columns):
0     306 non-null float64
1     305 non-null float64
2     306 non-null float64
3     303 non-null float64
4     304 non-null float64
5     305 non-null float64
6     321 non-null float64
7     309 non-null float64
8     310 non-null float64
9     309 non-null float64
10    302 non-null float64
11    292 non-null float64
12    317 non-null float64
dtypes: float64(13)
memory usage: 51.5 KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[39]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#使用均值进行填补</span>
<span class="kn">from</span> <span class="nn">sklearn.impute</span> <span class="k">import</span> <span class="n">SimpleImputer</span>
<span class="n">imp_mean</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">(</span><span class="n">missing_values</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span> <span class="n">strategy</span><span class="o">=</span><span class="s1">&#39;mean&#39;</span><span class="p">)</span>
<span class="n">X_missing_mean</span> <span class="o">=</span> <span class="n">imp_mean</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X_missing</span><span class="p">)</span>
<span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">X_missing_mean</span><span class="p">)</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[39]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0     0
1     0
2     0
3     0
4     0
5     0
6     0
7     0
8     0
9     0
10    0
11    0
12    0
dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[40]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#使用0进行填补</span>
<span class="n">imp_0</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">(</span><span class="n">missing_values</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span> <span class="n">strategy</span><span class="o">=</span><span class="s2">&quot;constant&quot;</span><span class="p">,</span><span class="n">fill_value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">X_missing_0</span> <span class="o">=</span> <span class="n">imp_0</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X_missing</span><span class="p">)</span>
<span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">X_missing_0</span><span class="p">)</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[40]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0     0
1     0
2     0
3     0
4     0
5     0
6     0
7     0
8     0
9     0
10    0
11    0
12    0
dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_missing_reg</span> <span class="o">=</span> <span class="n">X_missing</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>

<span class="n">sortindex</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">X_missing_reg</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span><span class="o">.</span><span class="n">values</span>
<span class="c1"># 返回从小到大排序所对应的索引</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[71]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_missing_reg</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[71]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0     200
1     201
2     200
3     203
4     202
5     201
6     185
7     197
8     196
9     197
10    204
11    214
12    189
dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[72]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">sortindex</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[72]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([ 6, 12,  8,  7,  9,  0,  2,  1,  5,  4,  3, 10, 11])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#19968;&#27425;&#22635;&#20805;">&#19968;&#27425;&#22635;&#20805;<a class="anchor-link" href="#&#19968;&#27425;&#22635;&#20805;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">X_missing_reg</span>
<span class="n">fillc</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">6</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[74]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">columns</span> <span class="o">!=</span> <span class="mi">6</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[74]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([ True,  True,  True,  True,  True,  True, False,  True,  True,
        True,  True,  True,  True])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="n">df</span><span class="o">.</span><span class="n">columns</span> <span class="o">!=</span> <span class="mi">6</span><span class="p">],</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">y_full</span><span class="p">)],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_0</span> <span class="o">=</span><span class="n">SimpleImputer</span><span class="p">(</span><span class="n">missing_values</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span>
                        <span class="n">strategy</span><span class="o">=</span><span class="s1">&#39;constant&#39;</span><span class="p">,</span><span class="n">fill_value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">df</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[77]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">fillc</span><span class="o">.</span><span class="n">notnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[77]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>321</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#找出我们的训练集和测试集</span>

<span class="c1"># 选择非空标签所对应的值</span>
<span class="n">Ytrain</span> <span class="o">=</span> <span class="n">fillc</span><span class="p">[</span><span class="n">fillc</span><span class="o">.</span><span class="n">notnull</span><span class="p">()]</span>

<span class="n">Ytest</span> <span class="o">=</span> <span class="n">fillc</span><span class="p">[</span><span class="n">fillc</span><span class="o">.</span><span class="n">isnull</span><span class="p">()]</span>
<span class="c1"># 我们需要的不是Ytest的值，而是它所带的索引</span>

<span class="c1"># 选出非空标签所对应的特征</span>
<span class="n">Xtrain</span> <span class="o">=</span> <span class="n">df_0</span><span class="p">[</span><span class="n">Ytrain</span><span class="o">.</span><span class="n">index</span><span class="p">,:]</span>
<span class="c1"># Xtrain2 = df_0[fillc.notnull(),:]二者等价</span>
<span class="n">Xtest</span> <span class="o">=</span> <span class="n">df_0</span><span class="p">[</span><span class="n">Ytest</span><span class="o">.</span><span class="n">index</span><span class="p">,:]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[79]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[79]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(321,)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[80]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span><span class="o">.</span><span class="n">index</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[80]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Int64Index([  0,   1,   2,   3,   5,   6,   7,  11,  12,  13,
            ...
            495, 496, 497, 498, 499, 500, 501, 502, 503, 504],
           dtype=&#39;int64&#39;, length=321)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#27979;&#35797;">&#27979;&#35797;<a class="anchor-link" href="#&#27979;&#35797;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[81]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">fillc</span><span class="o">.</span><span class="n">notnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[81]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>321</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain2</span> <span class="o">=</span> <span class="n">df_0</span><span class="p">[</span><span class="n">fillc</span><span class="o">.</span><span class="n">notnull</span><span class="p">(),:]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[83]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest2</span> <span class="o">=</span> <span class="n">df_0</span><span class="p">[</span><span class="n">fillc</span><span class="o">.</span><span class="n">isnull</span><span class="p">(),:]</span>
<span class="n">Xtest2</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[83]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(185, 13)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[84]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">type</span><span class="p">(</span><span class="n">Xtrain2</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[84]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>numpy.ndarray</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[85]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain2</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[85]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([  0.    ,   0.    ,   0.    ,   0.    ,   0.524 ,   5.889 ,
         5.4509,   0.    , 311.    ,  15.2   , 390.5   ,  15.71  ,
        21.7   ])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[86]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[86]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([  0.    ,   0.    ,   0.    ,   0.    ,   0.524 ,   5.889 ,
         5.4509,   0.    , 311.    ,  15.2   , 390.5   ,  15.71  ,
        21.7   ])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[87]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain2</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[87]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(321, 13)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[88]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="p">(</span><span class="n">Xtrain2</span><span class="o">-</span><span class="n">Xtrain</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[88]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.0</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#22635;&#20805;">&#22635;&#20805;<a class="anchor-link" href="#&#22635;&#20805;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#用随机森林回归来填补缺失值</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestRegressor</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
<span class="n">Ypredict</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[90]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">len</span><span class="p">(</span><span class="n">Ypredict</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[90]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>185</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[91]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_missing_reg</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
RangeIndex: 506 entries, 0 to 505
Data columns (total 13 columns):
0     306 non-null float64
1     305 non-null float64
2     306 non-null float64
3     303 non-null float64
4     304 non-null float64
5     305 non-null float64
6     321 non-null float64
7     309 non-null float64
8     310 non-null float64
9     309 non-null float64
10    302 non-null float64
11    292 non-null float64
12    317 non-null float64
dtypes: float64(13)
memory usage: 51.5 KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[92]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#将填补好的特征返回到我们的原始的特征矩阵中</span>
<span class="n">X_missing_reg</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">X_missing_reg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">6</span><span class="p">]</span><span class="o">.</span><span class="n">isnull</span><span class="p">(),</span><span class="mi">6</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ypredict</span>
<span class="n">X_missing_reg</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
RangeIndex: 506 entries, 0 to 505
Data columns (total 13 columns):
0     306 non-null float64
1     305 non-null float64
2     306 non-null float64
3     303 non-null float64
4     304 non-null float64
5     305 non-null float64
6     506 non-null float64
7     309 non-null float64
8     310 non-null float64
9     309 non-null float64
10    302 non-null float64
11    292 non-null float64
12    317 non-null float64
dtypes: float64(13)
memory usage: 51.5 KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#24490;&#29615;&#20840;&#37096;&#22635;&#20805;">&#24490;&#29615;&#20840;&#37096;&#22635;&#20805;<a class="anchor-link" href="#&#24490;&#29615;&#20840;&#37096;&#22635;&#20805;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[93]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_missing_reg2</span> <span class="o">=</span> <span class="n">X_missing</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>

<span class="n">sortindex</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">X_missing_reg2</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span><span class="o">.</span><span class="n">values</span>
<span class="n">X_missing_reg2</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[93]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0     200
1     201
2     200
3     203
4     202
5     201
6     185
7     197
8     196
9     197
10    204
11    214
12    189
dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">sortindex</span><span class="p">:</span>
    <span class="c1">#构建我们的新特征矩阵和新标签</span>
    <span class="n">df</span> <span class="o">=</span> <span class="n">X_missing_reg2</span>
    <span class="n">fillc</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="n">i</span><span class="p">]</span>
    <span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="n">df</span><span class="o">.</span><span class="n">columns</span> <span class="o">!=</span> <span class="n">i</span><span class="p">],</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">y_full</span><span class="p">)],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
    
    <span class="c1">#在新特征矩阵中，对含有缺失值的列，进行0的填补</span>
    <span class="n">df_0</span> <span class="o">=</span><span class="n">SimpleImputer</span><span class="p">(</span><span class="n">missing_values</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span>
                        <span class="n">strategy</span><span class="o">=</span><span class="s1">&#39;constant&#39;</span><span class="p">,</span><span class="n">fill_value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">df</span><span class="p">)</span>
    
    <span class="c1">#找出我们的训练集和测试集</span>
    <span class="n">Ytrain</span> <span class="o">=</span> <span class="n">fillc</span><span class="p">[</span><span class="n">fillc</span><span class="o">.</span><span class="n">notnull</span><span class="p">()]</span>
    <span class="n">Ytest</span> <span class="o">=</span> <span class="n">fillc</span><span class="p">[</span><span class="n">fillc</span><span class="o">.</span><span class="n">isnull</span><span class="p">()]</span>
    <span class="n">Xtrain</span> <span class="o">=</span> <span class="n">df_0</span><span class="p">[</span><span class="n">Ytrain</span><span class="o">.</span><span class="n">index</span><span class="p">,:]</span>
    <span class="n">Xtest</span> <span class="o">=</span> <span class="n">df_0</span><span class="p">[</span><span class="n">Ytest</span><span class="o">.</span><span class="n">index</span><span class="p">,:]</span>
    
    <span class="c1">#用随机森林回归来填补缺失值</span>
    <span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestRegressor</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span>
    <span class="n">rfc</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
    <span class="n">Ypredict</span> <span class="o">=</span> <span class="n">rfc</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
    
    <span class="c1">#将填补好的特征返回到我们的原始的特征矩阵中</span>
    <span class="n">X_missing_reg2</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">X_missing_reg2</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">isnull</span><span class="p">(),</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ypredict</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[95]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#对所有数据进行建模，取得MSE结果</span>
<span class="n">X</span> <span class="o">=</span> <span class="p">[</span><span class="n">X_full</span><span class="p">,</span><span class="n">X_missing_mean</span><span class="p">,</span><span class="n">X_missing_0</span><span class="p">,</span><span class="n">X_missing_reg2</span><span class="p">]</span>
<span class="n">mse</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">std</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">X</span><span class="p">:</span>
    <span class="n">estimator</span> <span class="o">=</span> <span class="n">RandomForestRegressor</span><span class="p">(</span><span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">n_estimators</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span>
    <span class="n">scores</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">estimator</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y_full</span><span class="p">,</span><span class="n">scoring</span><span class="o">=</span><span class="s1">&#39;neg_mean_squared_error&#39;</span><span class="p">,</span>
                            <span class="n">cv</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">mse</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">scores</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="n">mse</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[95]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[21.62860460743544, 40.84405476955929, 49.50657028893417, 19.47990619763152]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[97]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">x_labels</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Full data&#39;</span><span class="p">,</span>
            <span class="s1">&#39;Zero Imputation&#39;</span><span class="p">,</span>
            <span class="s1">&#39;Mean Imputation&#39;</span><span class="p">,</span>
            <span class="s1">&#39;Regressor Imputation&#39;</span><span class="p">]</span>
<span class="n">colors</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;r&#39;</span><span class="p">,</span> <span class="s1">&#39;g&#39;</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">,</span> <span class="s1">&#39;orange&#39;</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span><span class="c1">#添加子图</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mse</span><span class="p">)):</span>
    <span class="n">ax</span><span class="o">.</span><span class="n">barh</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">mse</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s1">&#39;center&#39;</span><span class="p">)</span>
<span class="c1">#     横向条形图</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">&#39;Imputation Techniques with Boston Data&#39;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mse</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.9</span><span class="p">,</span>
            <span class="n">right</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mse</span><span class="p">)</span> <span class="o">*</span> <span class="mf">1.1</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_yticks</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mse</span><span class="p">)))</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">&#39;MSE&#39;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">invert_yaxis</span><span class="p">()</span>
<span class="c1">#y轴反向</span>

<span class="n">ax</span><span class="o">.</span><span class="n">set_yticklabels</span><span class="p">(</span><span class="n">x_labels</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
SUVORK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#23454;&#20363;&#65306;&#38543;&#26426;&#26862;&#26519;&#22312;&#20083;&#33146;&#30284;&#25968;&#25454;&#19978;&#30340;&#35843;&#21442;">&#23454;&#20363;&#65306;&#38543;&#26426;&#26862;&#26519;&#22312;&#20083;&#33146;&#30284;&#25968;&#25454;&#19978;&#30340;&#35843;&#21442;<a class="anchor-link" href="#&#23454;&#20363;&#65306;&#38543;&#26426;&#26862;&#26519;&#22312;&#20083;&#33146;&#30284;&#25968;&#25454;&#19978;&#30340;&#35843;&#21442;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.datasets</span> <span class="k">import</span> <span class="n">load_breast_cancer</span>
<span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestClassifier</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">GridSearchCV</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[99]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="n">load_breast_cancer</span><span class="p">()</span>
<span class="n">data</span>
<span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">shape</span>
<span class="n">data</span><span class="o">.</span><span class="n">target</span>
<span class="c1">#可以看到，乳腺癌数据集有569条记录，30个特征，单看维度虽然不算太高，但是样本量非常少。</span>
<span class="c1"># 过拟合的情况可能存在。</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[99]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,
       1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0,
       1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1,
       1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0,
       0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1,
       1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0,
       0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0,
       1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1,
       1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0,
       0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
       0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0,
       1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1,
       1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1,
       1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
       1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
       1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1,
       1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[100]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
<span class="n">score_pre</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
<span class="n">score_pre</span>
<span class="c1">#这里可以看到，随机森林在乳腺癌数据上的表现本就还不错，在现实数据集上，基本上不可能什么都不调就看到95%以</span>
<span class="c1"># 上的准确率</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[100]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9666925935528475</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="n_estimators">n_estimators<a class="anchor-link" href="#n_estimators">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[101]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">scorel</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">10</span><span class="p">):</span>
    <span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span>
                                    <span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
                                    <span class="n">random_state</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
    <span class="n">score</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">scorel</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">score</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">scorel</span><span class="p">),(</span><span class="n">scorel</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">scorel</span><span class="p">))</span><span class="o">*</span><span class="mi">10</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">201</span><span class="p">,</span><span class="mi">10</span><span class="p">),</span><span class="n">scorel</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="c1">#list.index([object])</span>
<span class="c1">#返回这个object在列表list中的索引</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>0.9684480598046841 41
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[102]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">scorel</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span><span class="mi">45</span><span class="p">):</span>
    <span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="n">i</span><span class="p">,</span>
                                <span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
                                <span class="n">random_state</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
    <span class="n">score</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
    <span class="n">scorel</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">score</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">scorel</span><span class="p">),([</span><span class="o">*</span><span class="nb">range</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span><span class="mi">45</span><span class="p">)][</span><span class="n">scorel</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">scorel</span><span class="p">))]))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span><span class="mi">45</span><span class="p">),</span><span class="n">scorel</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>

<span class="c1"># 有一些参数是没有参照的，很难说清一个范围，这种情况下我们使用学习曲线，看趋势</span>
<span class="c1"># 从曲线跑出的结果中选取一个更小的区间，再跑曲线</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>0.9719568317345088 39
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
TkSuQmCC
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="max_depth">max_depth<a class="anchor-link" href="#max_depth">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[103]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#调整max_depth</span>
<span class="n">param_grid</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;max_depth&#39;</span><span class="p">:</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">1</span><span class="p">)}</span>
<span class="c1"># 一般根据数据的大小来进行一个试探，乳腺癌数据很小，所以可以采用1~10，或者1~20这样的试探</span>
<span class="c1"># 但对于像digit recognition那样的大型数据来说，我们应该尝试30~50层深度（或许还不足够</span>
<span class="c1"># 更应该画出学习曲线，来观察深度对模型的影响</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">39</span>
                            <span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span>
                            <span class="p">)</span>
<span class="n">GS</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">param_grid</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">GS</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.
  DeprecationWarning)
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt output_prompt">Out[103]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>GridSearchCV(cv=10, error_score=&#39;raise-deprecating&#39;,
       estimator=RandomForestClassifier(bootstrap=True, class_weight=None, criterion=&#39;gini&#39;,
            max_depth=None, max_features=&#39;auto&#39;, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=39, n_jobs=None,
            oob_score=False, random_state=90, verbose=0, warm_start=False),
       fit_params=None, iid=&#39;warn&#39;, n_jobs=None,
       param_grid={&#39;max_depth&#39;: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
       18, 19])},
       pre_dispatch=&#39;2*n_jobs&#39;, refit=True, return_train_score=&#39;warn&#39;,
       scoring=None, verbose=0)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[104]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_params_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[104]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;max_depth&#39;: 11}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[105]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_score_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[105]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9718804920913884</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="max_features">max_features<a class="anchor-link" href="#max_features">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[106]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 调整max_features</span>
<span class="n">param_grid</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;max_features&#39;</span><span class="p">:</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">30</span><span class="p">,</span><span class="mi">1</span><span class="p">)}</span>
<span class="c1"># &quot;&quot;&quot;</span>
<span class="c1"># max_features是唯一一个即能够将模型往左（低方差高偏差）推，也能够将模型往右（高方差低偏差）推的参数。我</span>
<span class="c1"># 们需要根据调参前，模型所在的位置（在泛化误差最低点的左边还是右边）来决定我们要将max_features往哪边调。</span>
<span class="c1"># 现在模型位于图像左侧，我们需要的是更高的复杂度，因此我们应该把max_features往更大的方向调整，可用的特征</span>
<span class="c1"># 越多，模型才会越复杂。max_features的默认最小值是sqrt(n_features)，因此我们使用这个值作为调参范围的</span>
<span class="c1"># 最小值。</span>
<span class="c1"># &quot;&quot;&quot;</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">39</span>
                            <span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span>
                            <span class="p">)</span>
<span class="n">GS</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">param_grid</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">GS</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.
  DeprecationWarning)
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt output_prompt">Out[106]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>GridSearchCV(cv=10, error_score=&#39;raise-deprecating&#39;,
       estimator=RandomForestClassifier(bootstrap=True, class_weight=None, criterion=&#39;gini&#39;,
            max_depth=None, max_features=&#39;auto&#39;, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=39, n_jobs=None,
            oob_score=False, random_state=90, verbose=0, warm_start=False),
       fit_params=None, iid=&#39;warn&#39;, n_jobs=None,
       param_grid={&#39;max_features&#39;: array([ 5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
       22, 23, 24, 25, 26, 27, 28, 29])},
       pre_dispatch=&#39;2*n_jobs&#39;, refit=True, return_train_score=&#39;warn&#39;,
       scoring=None, verbose=0)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[107]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_params_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[107]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;max_features&#39;: 5}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[108]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_score_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[108]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9718804920913884</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="min_samples_leaf">min_samples_leaf<a class="anchor-link" href="#min_samples_leaf">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[109]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#调整min_samples_leaf</span>
<span class="n">param_grid</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;min_samples_leaf&#39;</span><span class="p">:</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="o">+</span><span class="mi">10</span><span class="p">,</span> <span class="mi">1</span><span class="p">)}</span>

<span class="c1">#对于min_samples_split和min_samples_leaf,一般是从他们的最小值开始向上增加10或20</span>
<span class="c1">#面对高维度高样本量数据，如果不放心，也可以直接+50，对于大型数据，可能需要200~300的范围</span>
<span class="c1">#如果调整的时候发现准确率无论如何都上不来，那可以放心大胆调一个很大的数据，大力限制模型的复杂度</span>

<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">39</span>
                            <span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span>
                            <span class="p">)</span>
<span class="n">GS</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">param_grid</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">GS</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.
  DeprecationWarning)
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt output_prompt">Out[109]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>GridSearchCV(cv=10, error_score=&#39;raise-deprecating&#39;,
       estimator=RandomForestClassifier(bootstrap=True, class_weight=None, criterion=&#39;gini&#39;,
            max_depth=None, max_features=&#39;auto&#39;, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=39, n_jobs=None,
            oob_score=False, random_state=90, verbose=0, warm_start=False),
       fit_params=None, iid=&#39;warn&#39;, n_jobs=None,
       param_grid={&#39;min_samples_leaf&#39;: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])},
       pre_dispatch=&#39;2*n_jobs&#39;, refit=True, return_train_score=&#39;warn&#39;,
       scoring=None, verbose=0)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[110]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_params_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[110]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;min_samples_leaf&#39;: 1}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[111]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_score_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[111]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9718804920913884</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="min_samples_split">min_samples_split<a class="anchor-link" href="#min_samples_split">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[112]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#调整min_samples_split</span>
<span class="n">param_grid</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;min_samples_split&#39;</span><span class="p">:</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="o">+</span><span class="mi">20</span><span class="p">,</span> <span class="mi">1</span><span class="p">)}</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">39</span>
                            <span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span>
                            <span class="p">)</span>
<span class="n">GS</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">param_grid</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">GS</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.
  DeprecationWarning)
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt output_prompt">Out[112]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>GridSearchCV(cv=10, error_score=&#39;raise-deprecating&#39;,
       estimator=RandomForestClassifier(bootstrap=True, class_weight=None, criterion=&#39;gini&#39;,
            max_depth=None, max_features=&#39;auto&#39;, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=39, n_jobs=None,
            oob_score=False, random_state=90, verbose=0, warm_start=False),
       fit_params=None, iid=&#39;warn&#39;, n_jobs=None,
       param_grid={&#39;min_samples_split&#39;: array([ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
       19, 20, 21])},
       pre_dispatch=&#39;2*n_jobs&#39;, refit=True, return_train_score=&#39;warn&#39;,
       scoring=None, verbose=0)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[113]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_params_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[113]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;min_samples_split&#39;: 2}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[114]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_score_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[114]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9718804920913884</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Criterion">Criterion<a class="anchor-link" href="#Criterion">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[115]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#调整Criterion</span>
<span class="n">param_grid</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;criterion&#39;</span><span class="p">:[</span><span class="s1">&#39;gini&#39;</span><span class="p">,</span> <span class="s1">&#39;entropy&#39;</span><span class="p">]}</span>
<span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">39</span>
<span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span>
<span class="p">)</span>
<span class="n">GS</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">param_grid</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">GS</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[115]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>GridSearchCV(cv=10, error_score=&#39;raise-deprecating&#39;,
       estimator=RandomForestClassifier(bootstrap=True, class_weight=None, criterion=&#39;gini&#39;,
            max_depth=None, max_features=&#39;auto&#39;, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=39, n_jobs=None,
            oob_score=False, random_state=90, verbose=0, warm_start=False),
       fit_params=None, iid=&#39;warn&#39;, n_jobs=None,
       param_grid={&#39;criterion&#39;: [&#39;gini&#39;, &#39;entropy&#39;]},
       pre_dispatch=&#39;2*n_jobs&#39;, refit=True, return_train_score=&#39;warn&#39;,
       scoring=None, verbose=0)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[116]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_params_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[116]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;criterion&#39;: &#39;gini&#39;}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[117]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">GS</span><span class="o">.</span><span class="n">best_score_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[117]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9718804920913884</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[118]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">39</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
<span class="n">score</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
<span class="n">score</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[118]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9719568317345088</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[119]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">score</span> <span class="o">-</span> <span class="n">score_pre</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[119]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.005264238181661218</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[120]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">rfc2</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">68</span>
                            <span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">90</span>
                            <span class="p">,</span><span class="n">criterion</span><span class="o">=</span><span class="s2">&quot;gini&quot;</span>
                            <span class="p">,</span><span class="n">min_samples_split</span><span class="o">=</span><span class="mi">8</span>
                            <span class="p">,</span><span class="n">min_samples_leaf</span><span class="o">=</span><span class="mi">1</span>
                            <span class="p">,</span><span class="n">max_depth</span><span class="o">=</span><span class="mi">12</span>
                            <span class="p">,</span><span class="n">max_features</span><span class="o">=</span><span class="mi">2</span>
                            <span class="p">,</span><span class="n">max_leaf_nodes</span><span class="o">=</span><span class="mi">36</span>
                            <span class="p">)</span>
<span class="n">score2</span> <span class="o">=</span> <span class="n">cross_val_score</span><span class="p">(</span><span class="n">rfc2</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span><span class="n">data</span><span class="o">.</span><span class="n">target</span><span class="p">,</span><span class="n">cv</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
<span class="n">score2</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[120]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.964905798980209</pre>
</div>

</div>

</div>
</div>

</div>
    </div>
  </div>
</body>

 


</html>
